/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.isfd.service;

import java.io.File;
import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

import com.comac.ins.common.core.domain.model.LoginUser;
import com.comac.ins.common.mybatis.core.page.TableDataInfo;
import com.comac.ins.isfd.domain.bo.FastenerOriginalInfoBo;
import com.comac.ins.isfd.domain.bo.query.FastenerOriginalInfoQueryBo;
import com.comac.ins.isfd.domain.bo.query.FastenerQueryBo;
import com.comac.ins.isfd.domain.bo.query.FasteneraAllowableValueQueryBo;
import com.comac.ins.isfd.domain.bo.query.FastenerInfoAllowableValueQueryBo;
import com.comac.ins.isfd.domain.bo.query.FastenerModelAllowableValueQueryBo;
import com.comac.ins.isfd.domain.bo.query.ResultSplitAndSaveExcelTablesBo;
import com.comac.ins.isfd.domain.vo.FastenerCountObjectVo;
import com.comac.ins.isfd.domain.vo.FastenerImportObjectVo;
import com.comac.ins.isfd.domain.vo.FastenerInfoVo;
import com.comac.ins.isfd.domain.vo.FastenerModelTreeVo;
import com.comac.ins.isfd.domain.vo.IsfdFastenerCountObjectVo;
import com.comac.ins.isfd.domain.vo.IsfdTreeNodeVo;
import jakarta.servlet.http.HttpServletResponse;

/**
 * 紧固件service
 *
 * @author hxloongs
 * @date 2024-7-3
 */
public interface IFastenerService {

    /**
     * 统计紧固件各类型的数量接口
     */
    List<FastenerCountObjectVo> listCount();

    List<IsfdFastenerCountObjectVo> listCountByListByField(String field);

    /**
     * 查询紧固件库数据的树形接口
     */
    IsfdTreeNodeVo listTree();

    /**
     * 根据元数据id查询紧固件库数据接口
     */
    TableDataInfo<FastenerImportObjectVo> queryPageList(FastenerQueryBo fastenerQueryBo);

    List<String> allowableValueList(FasteneraAllowableValueQueryBo queryBo);

    List<ResultSplitAndSaveExcelTablesBo> allowableValueUploadExcel(MultipartFile file);

    List<IsfdTreeNodeVo<IsfdTreeNodeVo<FastenerModelTreeVo>>> getFastenerModelTreeList(FastenerModelAllowableValueQueryBo queryBo);

    List<FastenerInfoVo> getFastenerModelAllowableValueList(FastenerInfoAllowableValueQueryBo queryBo);

    List<FastenerOriginalInfoBo> getFastenerOriginalInfoList(FastenerOriginalInfoQueryBo queryBo);

    Long originalInfoUploadExcel(File file, LoginUser loginUser);

    void exportTemplate(HttpServletResponse response);

    void exportOriginalInfo(FastenerOriginalInfoQueryBo queryBo, HttpServletResponse response);
}
